The present invention relates to microprocessor having on-chip hardware for protecting the software run on that microprocessor against unauthorized use on another microprocessor. More particularly, the present invention relates to a microprocessor which operates to execute instructions of only that software which is authorized for use on that microprocessor by the creator of the software.
Software "piracy" has been an unsolved problem for the creators of software, such as "software houses", since the advent of the microprocessor. Many techniques have been investigated and used to prevent software piracy; however, these techniques have proven either too complicated for normal commercial use or too easy to circumvent. One such technique, for example, is to use an encryption algorithm--e.g. from the Data Encryption Standard (DES) or Public Key Cryptography--which utilizes either a secret or a publicly available "key" to decode or decrypt the software. Such a technique requires a relatively large amount of computing power and time to unscramble the encrypted code. What has long been needed is a simple way to protect software which is extremely, if not totally, secure.
Another technique that has been suggested for protecting software is to put some protection into the read-only memories (ROMs) that hold the software code (i.e., the machine instructions). However, by using a modern logic analyzer with a microprocessor probe, it is relatively easy to monitor all of the instructions that go into a microprocessor and to disassemble the program. Although the instructions obtained in this way follow the program flow at run time, it is still possible to obtain all the software code. Another disadvantage of a ROM-based protection scheme is that it cannot provide protection for software on a floppy disc or other mass storage medium.